#include <dretve.h>
#include <ispis.h>
#include <vrijeme.h>
#include <dogadjaji.h>

//poruke
char brojke[] = "1234567890";
char slova[] = "abcdefghijk";

int red_dog;

static void proizvodjac (void *param)
{
	int i;
	vrijeme_t koliko;
	char *c = param;

	koliko.sekunde = 1;
	koliko.nsekunde = 0;
	
	ispisi("Proizvodjac pocinje\n");

	for (i = 0; ; i++) {
		postavi_dogadjaj (0, 1, &c[i], 0, DOG_ZA_RED, red_dog);
		ispisi("Poslano: %c\n", c[i]);
		if (c[i] == '\0')
			break;
		odgodi(koliko);
	}

	ispisi("Proizvodjac zavrsava\n");
}

static void potrosac (void *param)
{
	dogadjaj_t dog;
	char znak, sve[30];
	int kraj = 0, i;
	int povvr;

	
	ispisi("Potrosac pocinje\n");

	for (i = 0; kraj < 2 && i < 30;) {
		povvr = dohvati_dogadjaj (red_dog, 0, &dog, DOG_CEKAJ);
		znak = *((char *) dog.pparam);
		ispisi("Procitano: %c\n", znak);
		if (znak == '\0')
			kraj++;
		else
			sve[i++] = znak;
	}

	sve[i] = '\0';

	ispisi("Potrosac zavrsava, primljeno: %s\n", sve);
}

void test_dogadjaji3()
{
	int dr1 = 0, dr2, dr3;

	ispisi("\n\n[%s:%s]\n", __FILE__, __FUNCTION__);

	red_dog = stvori_red_dogadjaja (DOG_NIKOME | DOG_OSTAJE, 0);
	
	dr1 = stvori_dretvu(potrosac, NULL);
	dr2 = stvori_dretvu(proizvodjac, brojke);
	dr3 = stvori_dretvu(proizvodjac, slova);
	if (dr1 == -1 || dr2 == -1 || dr3 == -1)
		return; //nije potrebno ispisivati poruku o gresci, to je vec

	cekaj_kraj_dretve(dr1);
	cekaj_kraj_dretve(dr2);
	cekaj_kraj_dretve(dr3);
}
